#  使用Set函数构建一个集合
# Set集合本质上是使用hash构建的它不允许元素重复集合内元素是唯一的
# Set集合我们在视觉上看可能是有序的但是在内部是无序的我们不可以使用索引访问
# Set集合中的元素必须是可哈希的 目前不可哈希的的有:list bytearray set dict
# Set集合中的元素是可迭代的
#当你创建一个包含不可哈希对象的集合时，Python实际上创建了一个包含这些对象的元组的集合。元组是不可变的，因此它们是可哈希的，可以被添加到集合中。
#当我们需要频繁搜索的时候尽量使用集合
#在遍历的情况下列表和集合效率都不高 因为hash的存在是为了去寻找集合中的某个数据 提高寻找速度
Set1 = set([1,2,3])
a = tuple(bytearray(b'abc'),)
Set2 = set(a)
print(Set1)
print(Set2)
# set remove方法通寻找集合元素的hash地址值进行原地修改 效率非常高 O(1)
# set discard方法如果集合中存在该元素则删除 如果不存在则不执行任何操作 效率非常高 O(1)
# set pop方法 因为set集合是无序的 所以pop方法会随机删除一个元素 效率非常高 O(1)
# set clear方法 清空集合中的所有元素 效率非常高 O(1)
# set add方法 向集合中添加元素 如果集合中存在该元素则不执行任何操作 如果不存在则添加该元素 效率非常高 O(1)
# set union方法 合并两个集合 效率非常高 O(n)
# set intersection方法 取两个集合的交集 效率非常高 O(n)
# set difference方法 取两个集合的差集 效率非常高 O(n)